import { Controller } from 'egg';
import {Op} from 'sequelize';
export default class HomeController extends Controller {
    //主页展示接口
    /**
     * @api {get} /home 主页
     * @apiName home
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 主页信息
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 查询数组集合
     * @apiSuccess {Object[]} data.resource_list 资源列表
     * @apiSuccess {String} data.resource_list.resource_id 资源ID
     * @apiSuccess {String} data.resource_list.resource_name 资源名称
     * @apiSuccess {String} data.resource_list.resource_url 资源路径
     * @apiSuccess {String} data.resource_list.resource_abstract 资源简介
     * @apiSuccess {String} data.resource_list.product_name 产品名称
     * @apiSuccess {String} data.resource_list.sub_name 子类型名称
     * @apiSuccess {Object[]} data.news_list 新闻列表
     * @apiSuccess {String} data.news_list.news_id 新闻Id
     * @apiSuccess {String} data.news_list.news_title 新闻标题
     * @apiSuccess {String} data.news_list.news_cover 新闻封面
     * @apiSuccess {String} data.news_list.news_abstract 新闻简述
     * @apiSuccess {String} data.news_list.publish_time 新闻发布时间
     * @apiSuccess {Object} data.solution 解决方案
     * @apiSuccess {Number} data.solution.solution_id 解决方案ID
     * @apiSuccess {String} data.solution.solution_name 解决方案名称
     * @apiSuccess {Number} data.solution.resource_id 资源ID
     * @apiSuccess {String} data.solution.resource_name 资源名称
     * @apiSuccess {String} data.solution.resource_url 资源路径
     * @apiSuccess {Object[]} data.product_list 
     * @apiSuccess {String} data.product_list.resource_id 资源ID
     * @apiSuccess {String} data.product_list.resource_name 资源名称
     * @apiSuccess {String} data.product_list.resource_url 资源路径
     * @apiSuccess {String} data.product_list.resource_abstract 资源简介
     * @apiSuccess {String} data.product_list.product_name 产品名称
     * @apiSuccess {String} data.product_list.category_name 类型名称
     * 
     *
     */
    /**
     * 主页查询：
     * 查询产品列表，解决方案列表，资源列表，新闻列表等信息，
     * 组装后返回结果
     */
    async index(){
        const {ctx,app}=this;
        const {Sub,Product,Resource,News,Solution} =app.model;
        const {HOME_NEWS_LEN,HOME_RESOURCE_LEN,HOME_PRODUCT_LEN,HOME_SOLUTION_LEN} =app.config;
        try {
            //let order_condition=ctx.helper.sort_order();
            let resource_list=await Resource.findAll({
                attributes:['resource_name','resource_id','resource_url','resource_abstract',['parent_id','product_id']],
                include:[
                    {
                        model:Product,
                        attributes:['product_name'],
                        association:Resource.belongsTo(Product,{foreignKey:'parent_id'}),
                        include:[{
                            model:Sub,
                            attributes:['sub_name'],
                            association:Product.belongsTo(Sub,{foreignKey:'sub_id'}),
                            
                        }]
                    }                
                ],
                where:{
                    type:1,
                    '$product.sub.sub_name$':{[Op.like]:"%课程资源%"}
                },
                limit:HOME_RESOURCE_LEN,
                raw:true,
                //order:order_condition
            })
            
            if(resource_list&&resource_list.length>0){
                resource_list=JSON.parse(JSON.stringify(resource_list));
                resource_list.map(ele=>{
                    ctx.helper.dot_filter(ele);
                })
            }
            
            
            let product_list=await ctx.service.common.product_list(Product,{},1,'product',HOME_PRODUCT_LEN);
            let solution_list=await ctx.service.common.product_list(Solution,{},2,'solution',HOME_SOLUTION_LEN)
            let news_list=await News.findAll({
                limit:HOME_NEWS_LEN,
                attributes:['news_id','news_title','news_cover','news_abstract','publish_time']
            });
            if(news_list&&news_list.length>0){
                news_list=JSON.parse(JSON.stringify(news_list));
            }
            let data={
                resource_list,
                news_list,
                //solution,
                product_list,
                solution_list
            }
            ctx.body=ctx.helper.success_result("查询成功",data)
        } catch (error) {
            console.log(error)
            ctx.body=ctx.helper.success_result("未查询数据")
        }
        
    }

    //主页底部数据展示
    /**
     * @api {get} /footer 主页底部数据(公司信息)
     * @apiName footer
     * @apiGroup Gaode
     * @apiVersion 1.0.0
     * @apiDescription 主页底部数据
     * @apiSuccess {Number} code 返回状态码 0失败  200成功
     * @apiSuccess {String} message 返回状态对应提示消息
     * @apiSuccess {Object} data 查询数组集合
     * @apiSuccess {String} data.address 公司详细地址
     * @apiSuccess {String} data.record 公司备案
     * @apiSuccess {String} data.phone 公司电话
     * @apiSuccess {String} data.email 公司官方邮箱
     * @apiSuccess {String} data.about_vedio 公司介绍视频
     * @apiSuccess {String} data.qrcode 公司二维码，
     * @apiSuccess {String} data.about_list 关于我们列表
     *
     */
    async footer(){
        const {ctx,app}=this;
        try {
            let result=await app.model.About.findOne();
            result=result ? JSON.parse(JSON.stringify(result)) : {};
            if(result){
                result['create_time']=ctx.helper.date_format_basic(result['create_time']);
            }
            return ctx.body=ctx.helper.success_result("查询成功",result);
        } catch (error) {
        }
        ctx.body=ctx.helper.error_result("查询异常");
    }
    async test(){
        this.ctx.body={code:0,message:'操作成功'}
    }
}

